//路由拦截
import router from "./router/index";
import useUserStore from "./store/user";
import { message } from "ant-design-vue";
//引入进度条
import nProgress from "nprogress";
import "nprogress/nprogress.css";

//1.判断是否登录
router.beforeEach((to, from, next) => {
  //进度条
  nProgress.start();
  //0.除过 登陆页面
  if (to.path === "/login") {
    next();
  } else {
    const userStore = useUserStore();
    //1.判断是否登录-token
    if (userStore.token) {
      //用户信息【用户 角色 状态】是否存在
      if (userStore.userInfo) {
        //存在-放行
        if (!userStore.userInfo.status) {
          //说明 当前用户已经被禁用
          message.warning("当前用户信息已被禁用，请联系管理员！");
          next("/login");
        } else if (
          !userStore.userInfo.roles ||
          userStore.userInfo.roles.length === 0
        ) {
          //没有分配角色 - 只能访问公共页面信息
          message.warning("当前用户，暂无角色！");
          next();
        } else {
          next();
        }
      } else {
        //不存在-重新发起请求
        userStore
          .getUserInfo()
          .then((res) => {
            //拿到结果放行
            next();
          })
          .catch((e) => {
            //发送请求获取不到
            message.warning("无法获取用户信息");
            //去登陆页
            next("/login");
          });
      }
    } else {
      message.warning("暂无权限");
      // 去登陆页
      next("/login");
    }
  }
});
//顶部进度条
router.afterEach(() => {
  nProgress.done();
});
